/**
 * @brief 演示使用类对象作为函数对象创建thread的方法
 * @note 在gcc4.8上，运行结果为：
 *			value = 102
 *			value = 100
 *       在VS2017上，运行结果为：
 *			value = 101
 *			value = 100
 *
 */

#include<iostream>
#include<thread>

class MyThreadObj
{
public:
	MyThreadObj(int i = 0) : value_(i){}
	int value_;

	void operator()(void)
	{
		std::cout<< "value = " << value_ << std::endl;
	}
	MyThreadObj(const MyThreadObj& other)
	{
		value_ = other.value_ + 1;
	}
};

int main(void)
{
	MyThreadObj m(100);
	std::thread t1(m);
	t1.join();

	std::thread t2(std::ref(m));
	t2.join();
}
